#include "cpu/exec/check_cc.h"
#include "cpu/reg.h"

#define  eflags cpu.eflags

int check_e() {
    return eflags.ZF;
}

int check_ne() {
    return !eflags.ZF;
}

int check_s() {
    return eflags.SF;
}

int check_ns() {
    return !eflags.SF;
}

int check_p() {
    return eflags.PF;
}

int check_np() {
    return !eflags.PF;
}

int check_o() {
    return eflags.OF;
}

int check_no() {
    return !eflags.OF;
}

int check_b() {
    return eflags.CF;
}

int check_nb() {
    return !eflags.CF;
}

int check_na() {
    return eflags.ZF || eflags.CF;
}

int check_a() {
    return !check_na();
}

int check_l() {
    return (!eflags.ZF) && (eflags.OF != eflags.SF);
}

int check_ge() {
    return !check_l();
}

int check_le() {
    return eflags.ZF || (eflags.OF != eflags.SF);
}

int check_g() {
    return !check_le();
}